package top.dotgo.model.sys;

import java.util.Date;
import java.io.Serializable;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.annotations.GenericGenerator;
import top.dotgo.model.IBaseEntity;

import javax.persistence.*;

/**
 * (OauthClientDetails)实体类
 *
 * @author jornl
 * @date 2020-05-21 00:03:49
 */
@Entity
@Data
@Accessors(chain = true)
@Table(name = "oauth_client_details")
public class OauthClientDetailsEntity implements IBaseEntity, Serializable {
       /**
     * 用于唯一标识每一个客户(client);
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "custom-id")
    @GenericGenerator(name = "custom-id", strategy = "top.dotgo.model.kit.CustomIDGenerator")
     @Column(name = "client_id")
     private String clientId;
    
    /**
     * 客户端所能访问的资源id集合
     */
     @Column(name = "resource_ids")
     private String resourceIds;
    
    /**
     * 用于指定客户端(client)的访问密匙
     */
     @Column(name = "client_secret")
     private String clientSecret;
    
    /**
     * 指定客户端申请的权限范围,可选值包括read,write,trust;若有多个权限范围用逗号(,)
     */
     @Column(name = "scope")
     private String scope;
    
    /**
     * 定客户端支持的grant_type,可选值包括authorization_code,password,refresh_token,implicit,client_credentials, 若支持多个grant_type用逗号(,)分隔
     */
     @Column(name = "authorized_grant_types")
     private String authorizedGrantTypes;
    
    /**
     * 客户端的重定向URI,可为空
     */
     @Column(name = "web_server_redirect_uri")
     private String webServerRedirectUri;
    
    /**
     * 指定客户端所拥有的Spring Security的权限值,可选
     */
     @Column(name = "authorities")
     private String authorities;
    
    /**
     * 设定客户端的access_token的有效时间值(单位:秒),可选, 若不设定值则使用默认的有效时间值(60 * 60 * 12, 12小时).
     */
     @Column(name = "access_token_validity")
     private Integer accessTokenValidity;
    
    /**
     * 设定客户端的refresh_token的有效时间值(单位:秒),可选, 若不设定值则使用默认的有效时间值(60 * 60 * 24 * 30, 30天).
     */
     @Column(name = "refresh_token_validity")
     private Integer refreshTokenValidity;
    
    /**
     * 这是一个预留的字段,在Oauth的流程中没有实际的使用,可选,但若设置值,必须是JSON格式的数据
     */
     @Column(name = "additional_information")
     private String additionalInformation;
    
    /**
     * 设置用户是否自动Approval操作, 默认值为 false, 可选值包括 true,false, read,write.
     */
     @Column(name = "autoapprove")
     private String autoapprove;
    
    /**
     * 数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成
     */
     @Column(name = "create_time")
     private Date createTime;
    
    /**
     * 用于标识客户端是否已存档(即实现逻辑删除),默认值为0(即未存档).
     */
     @Column(name = "archived")
     private Integer archived;
    


}